﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Zzva.Common;


namespace Zzva.DomainObject
{
    public class TDirSoftwareNew:TDirSoftwareBase 
    {


        public TDirSoftwareNew()
            : base()
        {
            mvarObozn = "";
            mvarNaim = "";
            mvarDeveloper = new TDirITCompanyNull();
            mvarHolder = new TDirITCompanyNull();


            ////
            mvarSoftType = new TDirSoftTypeNull();
        }

        public TDirSoftwareNew(string pObozn, string pNaim)
            : base()
        {

            Obozn = pObozn;
            Naim = pNaim;

            mvarDeveloper = new TDirITCompanyNull();
            mvarHolder = new TDirITCompanyNull();


            ////
            mvarSoftType = new TDirSoftTypeNull(); 



        }


        public override TDirSoftTypeBase SoftType
        {
            get { return mvarSoftType; }
            set
            {
                try
                {
                    Type lTypeObject;
                    lTypeObject = value.GetType();

                    switch (lTypeObject.Name)
                    {
                        case "TDirSoftTypeNew": throw (new CommonException("Ссылка должна быть на постоянный или нулевой объект"));
                        case "TDirSoftType":
                        case "TDirSoftTypeNull":
                            mvarSoftType = value;
                            break;
                        default: throw (new CommonException("Не существует объекта"));
                    }
                }
                catch (Exception e) { throw e; }
                finally { }
            }
        }













































        public override string Obozn
        {
            get { return mvarObozn; }

            set
            {
                try
                {
                    string lObozn;
                    lObozn = value.TrimEnd();
                    if (lObozn == "") { throw (new CommonException("Обозначение не должно быть пустым")); }
                    mvarObozn = lObozn;
                }

                catch (Exception e) { throw e; }
                finally { }

            }
        }


        public override string Naim
        {
            get{return mvarNaim;}
            set{mvarNaim = value;}
        }


        public override TDirITCompanyBase Developer
        {
            get { return mvarDeveloper ; }
            set
            {
                try
                {
                    Type lTypeObject ;
                    lTypeObject = value.GetType();

                    switch (lTypeObject.Name)
                    {
                        case "TDirITCompanyNew": throw (new CommonException("Ссылка должна быть на постоянный или нулевой объект"));
                        case "TDirITCompany":
                        case "TDirITCompanyNull":
                            mvarDeveloper = value; 
                            break;
                        default:throw (new CommonException("Не существует объекта"));
                    }
                }
                catch (Exception e) { throw e; }
                finally { }
            }
        }



        public override TDirITCompanyBase Holder
        {
            get { return mvarHolder ; }
            set
            {
                try
                {
                    Type lTypeObject;
                    lTypeObject = value.GetType();

                    switch (lTypeObject.Name)
                    {
                        case "TDirITCompanyNew": throw (new CommonException("Ссылка должна быть на постоянный или нулевой объект"));
                        case "TDirITCompany":
                        case "TDirITCompanyNull":
                            mvarHolder = value;
                            break;
                        default:throw (new CommonException("Не существует объекта"));
                    }
                }
                catch (Exception e) { throw e; }
                finally { }

            }
        }


    }
}
